package com.sky.controller.admin;

import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 分类管理
 * 20:16
 */
@RestController
@Slf4j
@RequestMapping("/admin/category")
public class CategoryController {


    @Resource
    private CategoryService categoryService;

    /**
     * 新增分类
     * @param categoryDTO
     * @return
     */
    @PostMapping
    public Result<String> addCategory(@RequestBody CategoryDTO categoryDTO) {
        log.info("[新增分类] cateogry:{}",categoryDTO);
        Integer tag = categoryService.addCategory(categoryDTO);
        return Result.success(tag>0?"新增成功":"新增失败");
    }


    /**
     * 删除分类
     * @param id
     * @return
     */
    @DeleteMapping
    public Result<String> removeById(Long id) {
        log.info("[删除分类] id:{}",id);
        Integer tag =  categoryService.removeById(id);
        if (tag > 0) {
            return Result.success("删除成功");
        }else  {
            return Result.error("删除失败");
        }
    }


    /**
     * 修改分类
     * @param
     * @return
     */
    @PutMapping
    public Result<String> updateById(@RequestBody CategoryDTO categoryDTO) {
        log.info("[修改分类] category:{}",categoryDTO);
        Integer tag = categoryService.updateById(categoryDTO);
        if (tag>0) {
            return Result.success("更新成功");
        }else  {
            return Result.error("更新失败");
        }
    }


    /**
     * 分类分页查询
     * @param categoryPageQueryDTO
     * @return
     */
    @GetMapping("/page")
    public Result<PageResult> findByPage(CategoryPageQueryDTO categoryPageQueryDTO) {
        // 打印
        log.info("[查询分类列表] category：{}",categoryPageQueryDTO);
        PageResult pageResult = categoryService.findByPage(categoryPageQueryDTO);
        return Result.success(pageResult);
    }


    /**
     * 启用、禁用 分类
     * @param status
     * @param id
     * @return
     */
    @PostMapping("/status/{status}")
    public Result<String> startOrStop(@PathVariable Integer status, Long id) {
        // 打印
        log.info("[启用、禁用分类] status:{} id:{}",status,id);
        // 调用
        Integer tag = categoryService.startOrStop(status, id);
        // 响应
        return Result.success(tag>0?"状态更新成功":"状态更新失败");
    }


    /**
     * 根据类型查询分类
     * @param type
     * @return
     */
    @GetMapping("/list")
    public Result<List<Category>> findByType(Integer type) {
        log.info("[根据类型查询分类] type:{}",type);
        List<Category> categoryList = categoryService.findByType(type);
        return Result.success(categoryList);
    }




}
